package fucai.com.fucai.utils;

import java.util.HashSet;
import java.util.Set;

/**
 * @说 明： 这是一个发现数据得出结果的类
 * @项目名称：fucai
 * @包 名： fucai.com.fucai.db
 * @类 名： Fucai
 * @创 建人： chenshuangniu
 * @创建时间：2015/12/14 21:59
 * @版 本：v1.0
 * @修 改人：
 * @修改时间：
 * @修改备注：
 */
public class AnalyseUtils {
    /**
     * 得到开奖号统计概率最大
     *
     * @param a
     * @param ones
     * @return
     */
    public static String getAnalyseOpenMax(int[][] a, String ones) {
        int one = Integer.parseInt(ones);
        int max = a[one][0];
        String maxNum = "";
        for (int i = 1; i < a.length; i++) {
            if (max < a[one][i]) {
                max = a[one][i];
            }
        }
        for (int i = 0; i < a.length; i++) {
            if (max == a[one][i]) {
                maxNum += (i + "");
            }
        }
        return maxNum;
    }

    public static String getAnalyseOpenMin(int[][] a, String ones) {
        int one = Integer.parseInt(ones);
        int min = a[one][0];
        String maxNum = "";
        for (int i = 1; i < a.length; i++) {
            if (min > a[one][i]) {
                min = a[one][i];
            }
        }
        for (int i = 0; i < a.length; i++) {
            if (min == a[one][i]) {
                maxNum += (i + "");
            }
        }
        return maxNum;
    }

    /**
     * @功能 把第一次预测的号码中个数大于2的返回 即为胆码 在加一点 是否可以设定一个等级 如果出现2次 表示可以定胆 出现3次 出现4次需要重点考虑
     * 出现次数多的是否可以在 《杀号》 的时候 不要进行杀号 本功能主要是增加胆码的正确性
     * @返回值 String  这里得到的是一个下标对应的统计 1 2 9 3 7 1 9 1  表示0出现1  1出现2 3出现9
     */
    public static int[] getFristForecastCount(String fristForecast) {
        int[] charSize = new int[10];
        // 传入参数不能为null
        if (fristForecast != null && !"".equals(fristForecast)) {
            // 把string转换为char[]
            char[] change = fristForecast.toCharArray();
            // 数组下标从0开始
            int count = 0;
            // 数组下标小于10
            while (count < 10) {
                // 字符串对比
                String countStr = String.valueOf(count);
                // 统计char个数
                for (char c : change) {
                    String charStr = String.valueOf(c);
                    if (countStr.equals(charStr)) {
                        charSize[count]++;
                    }
                }
                count++;
            }
        }
        return charSize;
    }

    /**
     * @功能 根据预测号 计算相应出号
     * @返回值 Set<String> 2015-4-21上午9:11:37
     */
    public static void createSetData(Set<String> setComprise, int[] recuse) {
        for (int one = 0; one < recuse.length; one++)
            for (int two = 0; two < 10; two++)
                for (int there = 0; there < 10; there++) {
                    if (recuse[one] > 1) { // 这里使用了 一个号码不可能一直高概率 所以使用相反方向
                        setComprise.add(one + "" + two + "" + there);
                        setComprise.add(one + "" + there + "" + two);
                        setComprise.add(two + "" + one + "" + there);
                        setComprise.add(two + "" + there + "" + one);
                        setComprise.add(there + "" + two + "" + one);
                        setComprise.add(there + "" + one + "" + two);
                    }
                }
    }
}
